<?php

namespace App\Http\Controllers\Landscaping;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\Landscaping\ParkVirus;
use Illuminate\Database\QueryException;
use App\Http\Requests\Landscaping\ParkVirusRequest;

/**
 * @group 基础信息管理->绿化->园林养护病毒规程库管理
 *
 * 采用 restful api
 *
 * Body Parameters 表示请求的所需要的参数
 *
 * Query Parameters 表示返回参数的名称
 */

class ParkVirusController extends Controller
{
    /**
     * 园林养护病毒规程库查看列表
     *
     * @bodyParam virus_name string 病害知识库名
     * @bodyParam upload_id int 上传人 外键 员工表
     *
     * @queryParam virus_name string 病害知识库名
     * @queryParam virus_keyword string 病害知识库关键词
     * @queryParam virus_content text 病害知识库内容
     * @queryParam upload_id int 上传人 外键 员工表
     * @queryParam attached_page int 附件页数
     * @queryParam virus_user string 适用人群
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $parkVirus = new ParkVirus;
        $data = $parkVirus->getList($request);
        return response()->json(encodeMsg($data,200));
    }

    /**
     * 添加园林养护病毒规程
     *
     * @bodyParam virus_name string 病害知识库名
     * @bodyParam virus_keyword string 病害知识库关键词
     * @bodyParam virus_content text 病害知识库内容
     * @bodyParam upload_id int 上传人 外键 员工表
     * @bodyParam attached_page int 附件页数
     * @bodyParam virus_user string 适用人群
     *
     * @queryParam virus_name string 病害知识库名
     * @queryParam virus_keyword string 病害知识库关键词
     * @queryParam virus_content text 病害知识库内容
     * @queryParam upload_id int 上传人 外键 员工表
     * @queryParam attached_page int 附件页数
     * @queryParam virus_user string 适用人群
     *
     * @return \Illuminate\Http\Response
     */
    public function store(ParkVirusRequest $request)
    {
        try {
            $data = ParkVirus::create($request->all());
            return response()->json(encodeMsg($data,201));
        } catch (QueryException $e) {
            return response()->json(encodeMsg(['message' => '病毒规程添加失败!'],400));
        }
    }

    /**
     * 查看园林养护病毒规程
     *
     * @bodyParam id int required 病毒规程ID
     *
     * @queryParam virus_name string 病害知识库名
     * @queryParam virus_keyword string 病害知识库关键词
     * @queryParam virus_content text 病害知识库内容
     * @queryParam upload_id int 上传人 外键 员工表
     * @queryParam attached_page int 附件页数
     * @queryParam virus_user string 适用人群
     *
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $data = ParkVirus::find($id);
        if($data == []) {
            return response()->json(encodeMsg(["message" => "没有该病毒规程信息!"], 404));
        } else {
            return response()->json(encodeMsg($data,200));
        }
    }

    /**
     * 修改园林养护病毒规程
     *
     * @bodyParam id int required 病毒规程ID
     * @bodyParam virus_name string 病害知识库名
     * @bodyParam virus_keyword string 病害知识库关键词
     * @bodyParam virus_content text 病害知识库内容
     * @bodyParam upload_id int 上传人 外键 员工表
     * @bodyParam attached_page int 附件页数
     * @bodyParam virus_user string 适用人群
     *
     * @queryParam virus_name string 病害知识库名
     * @queryParam virus_keyword string 病害知识库关键词
     * @queryParam virus_content text 病害知识库内容
     * @queryParam upload_id int 上传人 外键 员工表
     * @queryParam attached_page int 附件页数
     * @queryParam virus_user string 适用人群
     *
     * @return \Illuminate\Http\Response
     */
    public function update(ParkVirusRequest $request, $id)
    {
        $parkVirus = ParkVirus::find($id);
        if($parkVirus == []) {
            return response()->json(encodeMsg(["message" => "没有该病毒规程信息!"], 404));
        }
        try {
            $parkVirus->update($request->all());
            return response()->json(encodeMsg($parkVirus,200));
        } catch (QueryException $e) {
            return response()->json(encodeMsg(['message' => '病毒规程修改失败!'],400));
        }
    }

    /**
     * 删除园林养护病毒规程
     *
     * @bodyParam id int required 病毒规程ID
     * @response 204 {
     *   "message": "病毒规程删除成功"
     * }
     *
     *
     * @response 404 {
     *  "message": "没有该病毒规程信息"
     * }
     *
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $parkVirus = ParkVirus::find($id);
        if($parkVirus == []) {
            return response()->json(encodeMsg(["message" => "没有该病毒规程信息!"], 404));
        }
        if($parkVirus->delete()) {
            return response()->json(encodeMsg(["message" => "病毒规程删除成功!"], 204));
        } else {
            return response()->json(encodeMsg(["message" => "病毒规程删除失败"], 400));
        }
    }

    /**
     * 病毒规程批量删除
     *
     * @bodyParam  ids int required  id集合字符串[格式：ids=1,2,3]
     * @response 204 {
     *   "message": "病毒规程删除成功"
     * }
     *
     *
     */
    public function delete($ids)
    {
        $listId = explode(',', $ids);
        ParkVirus::whereIn('id',$listId)->delete();
        return response()->json(encodeMsg(["message" => "病毒规程删除成功!"], 204));
    }
}
